/**************************************************************************************************
* Title: SumRenderEntity.cpp
* Author: Gael Huber
* Description: A renderable entity within the engine. Contains information about relevant scene,
*	mesh data, textures, etc.
**************************************************************************************************/
#include "SumRenderEntity.h"

/**************************************************************************************************
* Constructor
**************************************************************************************************/
RenderEntity::RenderEntity(void)
	: _name(""), _mesh(0)
{ }

/**************************************************************************************************
* Constructor with name, mesh name
**************************************************************************************************/
RenderEntity::RenderEntity(const String& name, Mesh* mesh)
	: _name(name), _mesh(mesh)
{ }

/**************************************************************************************************
* Copy constructor
**************************************************************************************************/
RenderEntity::RenderEntity(const RenderEntity& rhs) 
	: _name(rhs.name()), _mesh(rhs.mesh())
{
	MatrixIdentity_16f(&_transform);
}

/**************************************************************************************************
* Destructor
**************************************************************************************************/
RenderEntity::~RenderEntity(void) {
	_mesh = 0;
}

/**************************************************************************************************
* Get the entity name
**************************************************************************************************/
const String& RenderEntity::name(void) const {
	return _name;
}

/**************************************************************************************************
* Get the mesh
**************************************************************************************************/
Mesh* RenderEntity::mesh(void) const {
	return _mesh;
}

/**************************************************************************************************
* Get the transform information
**************************************************************************************************/
Matrix_16f& RenderEntity::transform(void) {
	return _transform;
}

/**************************************************************************************************
* Set the transform information
**************************************************************************************************/
void RenderEntity::transform(const Matrix_16f& transform) {
	_transform = transform;
}